1. Field of Invention
The present invention pertains to the field of processing systems. More particularly, this invention relates to class loading by a virtual machine.
2. Art Background
Computer systems and devices having embedded processing resources typically conform to one of a variety of differing architectures. Each architecture is usually defined by a particular instruction set, hardware register set, and memory arrangement, etc. An architecture may also be referred to as a hardware platform for software execution. Software such as application programs which are written or compiled to be executed on a particular hardware platform may be referred to as native code. An application program in the native code of a particular hardware platform usually does not run on other non compatible hardware platforms.
Some software environments enable application programs to execute on a variety of differing hardware platforms. Typically, such a software environment provides a set of predefined services which are specified in terms of application programming interfaces (APIs). Such a software environment is commonly implemented in an object-oriented programming language in which the predefined services are implemented as predefined classes.
One example of such a software environment is a Java virtual machine. A typical Java virtual machine supports a set of predefined classes. Typically, a Java virtual machine includes a class loader that loads the predefined classes into memory as needed when executing a Java application program. Prior java virtual machines typically load the predefined classes from class libraries contained in a local or a remote file system.
Unfortunately, such class loading may limit the applicability of such a software environment. For example, such a software environment may have limited applicability to embedded systems which may have little or no file system resources for storing the class libraries. In addition, the costs of providing the network access resources needed to load classes from remote class libraries and/or the costs of providing network servers to hold the remote class libraries may be prohibitively high for embedded systems.